02-Launch-Template생성
Launch Template 생성
목표
기존 Web 서버와 똑같이 동작하는 새로운 서버를 자동으로 만들 수 있는 Launch Template을 생성합니다.
Launch Template이 필요한 이유
수동 vs 자동 서버 생성
수동 방식 (기존):
1. EC2 콘솔에서 인스턴스 시작
2. AMI, 인스턴스 타입, 보안그룹 선택
3. SSH 접속해서 Apache 설치
4. 프록시 설정 파일 생성
5. WAS 서버 IP 설정
6. Target Group에 수동 등록
자동 방식 (Launch Template):
1. 미리 만든 템플릿으로 인스턴스 자동 생성
2. User Data 스크립트로 자동 설치
3. Auto Scaling이 Target Group에 자동 등록
WAS 서버 정보 확인
Launch Template을 만들기 전에 WAS 서버 정보를 정확히 확인해야 합니다.
WAS 서버 Private IP 확인
- EC2 콘솔 → 인스턴스 → WAS 서버 클릭
- 프라이빗 IPv4 주소 기록 (예: 10.0.2.45)
기존 프록시 설정 확인
# 기존 Web 서버에 접속
ssh -i webapp-keypair.pem ec2-user@Web서버-Public-IP
# 현재 프록시 설정 확인
sudo cat /etc/httpd/conf.d/webapp-proxy.conf
# WAS 서버 IP가 올바르게 설정되어 있는지 확인
# 이 설정을 User Data 스크립트에서 재현해야 함
User Data 스크립트 준비
먼저 현재 WAS 서버의 Private IP를 확인하고 기록해두세요.
WAS 서버 IP 확인 및 기록
- EC2 콘솔 → 인스턴스 → WAS 서버 클릭
- 프라이빗 IPv4 주소 복사 (예: 10.0.2.45)
- 메모장에 기록:
WAS_IP=10.0.2.45
간단한 User Data 스크립트
아래 스크립트를 복사하고 YOUR_WAS_IP 부분만 위에서 확인한 IP로 바꾸세요.
#!/bin/bash
# 시스템 업데이트 및 Apache 설치
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
# 인스턴스 정보 가져오기
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
AZ_INFO=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
# webapp 디렉토리 생성
mkdir -p /var/www/html/webapp/css
# 기본 페이지 생성
cat > /var/www/html/index.html << EOF
<!DOCTYPE html>
<html><head><title>Auto Scaling Web Server</title></head>
<body style="text-align:center; padding:50px; font-family:Arial;">
<h1 style="color:#4CAF50;">Auto Scaling Web Server</h1>
<div style="background:#f0f0f0; padding:20px; margin:20px;">
<p>Server ID: $INSTANCE_ID</p>
<p>Zone: $AZ_INFO</p>
</div>
<p><a href="/webapp/">동적 컨텐츠 테스트</a></p>
</body></html>
EOF
# 정적 페이지 생성
cat > /var/www/html/webapp/index.html << EOF
<!DOCTYPE html>
<html><head><title>Apache Static Page</title></head>
<body style="text-align:center; padding:50px; font-family:Arial;">
<h1>Apache Web Server ($INSTANCE_ID)</h1>
<p>이 페이지는 Apache에서 직접 처리됩니다.</p>
<p><a href="/webapp/" style="background:#4CAF50; color:white; padding:10px; text-decoration:none;">JSP 페이지로 이동</a></p>
</body></html>
EOF
# 프록시 설정 (중요: YOUR_WAS_IP를 실제 IP로 바꾸세요)
cat > /etc/httpd/conf.d/webapp-proxy.conf << 'EOF'
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80>
DocumentRoot /var/www/html
ProxyPreserveHost On
ProxyPass /webapp/ http://YOUR_WAS_IP:8080/webapp/
ProxyPassReverse /webapp/ http://YOUR_WAS_IP:8080/webapp/
ProxyPass /webapp/css !
ProxyPass /webapp/js !
EOF
# Apache 재시작
systemctl restart httpd
echo "Setup completed: $INSTANCE_ID" >> /var/log/user-data.log
꼭 수정하세요: YOUR_WAS_IP → 실제 WAS 서버 IP (예: 10.0.2.45)
Launch Template 생성
1단계: Launch Template 생성 시작
- EC2 콘솔 → 왼쪽 메뉴 시작 템플릿 클릭
- 시작 템플릿 생성 버튼 클릭
2단계: 기본 정보
시작 템플릿 이름:
webapp-web-template
템플릿 버전 설명:
Auto Scaling Web Server with Apache Proxy v1
3단계: 시작 템플릿 콘텐츠
Application and OS Images (AMI):
- Amazon Linux 2023 AMI 선택
인스턴스 유형:
t2.micro선택
키 페어:
- 기존 키페어 선택 (예: webapp-keypair)
4단계: 네트워크 설정
서브넷:
- 지정하지 않음 (Auto Scaling에서 설정)
보안 그룹:
- 기존 Web 서버 보안 그룹 선택
- 포트 80, 22가 열려있는 보안 그룹
5단계: 고급 세부 정보
User Data 섹션에 위에서 준비한 스크립트 전체를 복사 붙여넣기
중요: YOUR_WAS_PRIVATE_IP를 실제 WAS 서버 IP로 바꿨는지 확인
6단계: 시작 템플릿 생성
시작 템플릿 생성 클릭
Launch Template 테스트
테스트 인스턴스 생성
- 시작 템플릿 →
webapp-web-template선택 - 작업 → 템플릿에서 인스턴스 시작 클릭
- 서브넷: Public 서브넷 중 하나 선택
- 인스턴스 시작 클릭
동작 확인 (5분 후)
정적 파일 테스트:
http://테스트인스턴스-Public-IP/
→ Auto Scaling Web Server 페이지 표시
http://테스트인스턴스-Public-IP/webapp/index.html
→ Apache 정적 페이지 표시
동적 파일 테스트:
http://테스트인스턴스-Public-IP/webapp/
→ Tomcat JSP 페이지 표시 (프록시 동작 확인)
로그 확인
# 테스트 인스턴스에 SSH 접속
ssh -i webapp-keypair.pem ec2-user@테스트인스턴스-Public-IP
# User Data 실행 로그 확인
sudo cat /var/log/user-data.log
sudo cat /var/log/cloud-init-output.log
# Apache 상태 확인
sudo systemctl status httpd
# 프록시 설정 확인
sudo cat /etc/httpd/conf.d/webapp-proxy.conf
테스트 완료 후 정리
테스트가 성공하면 테스트용 인스턴스는 삭제:
- 인스턴스 → 테스트 인스턴스 선택
- 인스턴스 상태 → 인스턴스 종료
문제 해결
동적 페이지가 안 나올 때
1. WAS 서버 IP 확인:
# 프록시 설정에서 IP 확인
sudo cat /etc/httpd/conf.d/webapp-proxy.conf | grep ProxyPass
# 실제 WAS 서버로 직접 테스트
curl http://WAS서버-Private-IP:8080/webapp/
2. User Data 실행 확인:
sudo cat /var/log/cloud-init-output.log | grep -i error
3. Apache 에러 로그:
sudo tail -f /var/log/httpd/error_log
User Data 스크립트 수정이 필요한 경우
- Launch Template → 작업 → 템플릿 수정(새 버전 생성)
- User Data 스크립트 수정
- 새 버전으로 다시 테스트
완료 체크리스트
중요 정보 기록
Launch Template 정보:
- 이름:
webapp-web-template - 버전:
1 - AMI: Amazon Linux 2023
- 인스턴스 타입: t2.micro
- WAS 서버 IP:
10.0.x.x(실제 IP)
Launch Template 생성 완료 이제 Auto Scaling Group을 만들어봅시다.
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/03-Auto-Scaling-Group/03-ASG생성및정책설정
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/03-Auto-Scaling-Group/01-Auto-Scaling개념, AWS EDU/Archive/조선대학교 AWS 멘토링/Edu Architecture/README